package day_2022_4_to_7.nowcoder;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * 把数组排成最小的数
 * @author haomin
 * @date 2022/05/07 16:58
 **/
public class SortArrToMin_27f {
    public String PrintMinNumber(int [] numbers) {
        // a. 所以我们先创建一个list集合，并将所有元素添加到list集合中
        ArrayList<Integer> list = new ArrayList<>();
        for(int i:numbers){
            list.add(i);
        }

        // b. 然后进行list集合排序，这里，我们可以重写compare 方法
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer x, Integer y) {
                // 序列中任何一个元素y，和它前的任何一个元素x进行有序组合形成 xy
                String xy = x +""+ y;
                // 他后面的任何一个元素z进行有效序列组合yz
                String yx = y +""+ x;
                // 满足条件xy < yz（采用字典序列排序）
                return xy.compareTo(yx);
            }
        });

        // c. 排序后的list 集合就是我们需要的集合
        String str ="";
        for(Integer i:list){
            str+=i;
        }
        return str;
    }
}